A robot can be qualified as autonomous when it is able to perform behaviors or tasks with a high degree of autonomy, even in an initially unknown environment. In order to move and perform behaviors safely, an autonomous robot needs to locate and collect information about potentially hazardous obstacles.
Therefore, the problem of autonomously collecting information about local obstacles is a crucial problem in the field of robotics.
According to prior art, best known techniques for obstacle detection belong to a category of method called the “Simultaneous Localization And Mapping” (SLAM). These methods provide simultaneous detection of obstacles and positioning of a robot relative to its environment. SLAM techniques are disclosed by THRUN, S. BURGARD, W. FOX D. Probabilistic Robotic. MIT Press, 2005; MONTEMERLO, M. THRUN S. KOLLER D. WEGBREIT B., FastSLAM: A factored solution to the simultaneous localization and mapping problem, AAAI/IAAI, 2002, pages 593 a 598.
A robot can be qualified as humanoid from the moment when it has certain human appearance attributes: a head, a trunk, two arms, two hands, etc. A humanoid robot may, however, be more or less sophisticated. Its limbs may have a greater or lesser number of articulations. It may control its own balance statically and dynamically and walk on two limbs, possibly in three dimensions, or simply roll over a base. It may pick up signals from the environment (“hear”, “see”, “touch”, “sense”, etc.) and react according to more or less sophisticated behaviors, and interact with other robots or humans, either by speech or by gesture.
Such a robot may be specifically designed for human interactions. However these interactions, including face and emotions recognitions, as well as gestures and dialogues, are highly CPU intensive. These interactions are the core of humanoid robots. Therefore, one problem that robot designers have to solve is to design all other robot functions to operate with the lowest possible CPU usage. These other functions include notably localization, collision avoidance, and obstacle detection, which have to be performed continuously from the moment when the robot is powered on.
The size of the environment map used by the robot in SLAM techniques increases when the robot discovers a new part of its environment. Since SLAM techniques use all known parts of the environment to compute robot position, it is almost impossible to provide an upper bound to obstacle detection complexity, and therefore CPU usage using a SLAM technique in an environment with an unknown size. Moreover, SLAM implementations use CPU-intensive techniques, such as covariance matrixes for EKF-SLAM (or Extended Kalman Filter SLAM). SLAM techniques estimates robot position as well as the position of a set of landmarks. As the robot discovers its environment, it adds new landmarks to this set. In EKF SLAM, each new landmark is added to a state vector and covariance matrix. Therefore, a large environment with a number of potential landmarks may cause very high complexity. Therefore, the use of SLAM techniques may result in a critical CPU usage for the sole localization and obstacle detection, threatening CPU availability for human interactions. Meanwhile, SLAM techniques are designed to locate a robot in a static world using static landmarks. Hence, it is inefficient at detecting mobile obstacles. C.-C Wang disclosed a method for simultaneously using SLAM and Mobile Object Tracking (MOT) in “Simultaneous localization, mapping and moving object tracking”. However, this technique basically consists in the simultaneous execution of SLAM and MOT to overcome one SLAM limitation, thus adding even additional complexity.
European patent application nº14305543.2 discloses a method for localizing a robot in a localization plane that leads to a precise localization of a robot with reduced CPU usage compared to a SLAM technique.
Such a method solves the robot localization issue. But there is still a need to detect obstacles with sufficient reliability to avoid collision, while being the least complex and CPU intensive.